// pages/profile/profile.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    isLogin: false,
    userInfo: null,
    userStats: {
      works: 0,
      likes: 0,
      followers: 0,
      following: 0
    },
    worksList: [],
    activityData: [],
    currentTab: 'likes',
    isLoading: false,
    displayUserId: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 检查全局登录状态
    const app = getApp();
    if (app.globalData.userInfo) {
      this.setData({
        isLogin: true,
        userInfo: app.globalData.userInfo
      });
    }
    this.initializeData();
  },
  
  /**
   * 退出登录方法
   */
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出当前账号吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除本地存储的token和用户信息
          wx.removeStorage({key: 'token'});
          wx.removeStorage({key: 'userInfo'});
          
          // 更新全局登录状态
          const app = getApp();
          app.globalData.isLogin = false;
          app.globalData.userInfo = null;
          app.globalData.token = '';
          
          // 重置页面数据
          this.setData({
            isLogin: false,
            userInfo: null,
            userStats: {
              works: 0,
              likes: 0,
              followers: 0,
              following: 0
            },
            worksList: [],
            activityData: []
          });
          
          wx.showToast({
            title: '退出登录成功',
            icon: 'success'
          });
        }
      }
    });
  },

  /**
   * 登录方法
   */
  login() {
    wx.showLoading({
      title: '登录中...',
    });

    // 调用微信登录接口
    wx.login({
      success: (res) => {
        if (res.code) {
          // 发送 res.code 到后端换取 openId, sessionKey, unionId
          wx.request({
            url: 'http://127.0.0.1:8056/index.php?c=api&a=wxlogin',
            method: 'POST',
            data: {
              code: res.code
            },
            header: {
              'Content-Type': 'application/x-www-form-urlencoded'
            },
            success: (loginRes) => {
              if (loginRes.data.code === 1) {
                // 登录成功，保存 token 和用户信息
                const app = getApp();
                app.globalData.userInfo = loginRes.data.data;
                // 保存 token 到本地存储
                if (loginRes.data.data.token) {
                  wx.setStorage({
                    key: 'token',
                    data: loginRes.data.data.token
                  });
                }
                // 保存用户信息到本地存储
                wx.setStorage({
                  key: 'userInfo',
                  data: loginRes.data.data
                });
                // 更新页面状态
                this.setData({
                  isLogin: true,
                  userInfo: loginRes.data.data
                });
                // 初始化数据
                this.initializeData();                
              } else {
                wx.hideLoading();
                wx.showToast({
                  title: loginRes.data.msg || '登录失败',
                  icon: 'none'
                });
              }
            },
            fail: () => {
              wx.hideLoading();
              wx.showToast({
                title: '网络请求失败',
                icon: 'none'
              });
            }
          });
        } else {
          wx.hideLoading();
          wx.showToast({
            title: '登录失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.hideLoading();
        wx.showToast({
          title: '登录失败',
          icon: 'none'
        });
      }
    })
  },
  
  /**
   * 获取用户信息的独立方法
   */
  getUserProfileInfo(loginData) {
    // 使用wx.getUserProfile获取用户信息
    wx.getUserProfile({
      desc: '用于完善会员资料',
      success: (userRes) => {
        const userInfo = userRes.userInfo;
        // 合并后端返回的用户信息
        const completeUserInfo = {
          ...userInfo,
          userId: loginData.openid,
          points: loginData.user_info.points,
          level: loginData.user_info.level
        };
        
        // 更新用户信息到后端
        wx.request({
          url: 'http://127.0.0.1:8056/index.php?c=api&a=updateUserInfo',
          method: 'POST',
          data: {
            nickName: userInfo.nickName,
            avatar: userInfo.avatarUrl
          },
          success: (updateRes) => {
            if (updateRes.data.code === 1) {
              // 保存到全局
              const app = getApp();
              app.globalData.userInfo = completeUserInfo;
              // 保存到本地存储
              wx.setStorage({
                key: 'userInfo',
                data: completeUserInfo
              });
              // 更新页面状态
              this.setData({
                isLogin: true,
                userInfo: completeUserInfo
              });
              // 初始化数据
              this.initializeData();
            }
          },
          complete: () => {
            wx.hideLoading();
          }
        });
      },
      fail: () => {
        wx.hideLoading();
        wx.showModal({
          title: '授权失败',
          content: '需要您的授权才能继续使用，请点击"确定"前往设置页面开启授权',
          success: (modalRes) => {
            if (modalRes.confirm) {
              wx.openSetting();
            }
          }
        });
      }
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 页面显示时可以刷新数据
    if (this.data.needRefresh) {
      this.initializeData();
      this.setData({
        needRefresh: false
      });
    }
  },

  /**
   * 初始化数据
   */
  initializeData() {
    if (this.data.isLogin) {
      this.initUserInfo();
      this.initWorksList();
      this.loadActivityData('likes');
    }
  },

  /**
   * 初始化用户信息
   */
  initUserInfo() {
    wx.showLoading({
      title: '加载中...',
    });
    
    // 调用后端API获取用户信息和统计数据
    wx.request({
      url: 'http://127.0.0.1:8056/index.php?c=api&a=getUserInfo',
      header: {
        // 从本地存储中获取token
        'Authorization': wx.getStorageSync('token')
      },
      method: 'GET',
      success: (res) => {
        if (res.data.code === 1) {
          const userData = res.data.data;
          this.setData({
            userInfo: {
              ...this.data.userInfo,
              ...userData,
              // 确保用户ID存在
              userId: userData.user_id || this.data.userInfo?.userId,
              // 确保头像URL格式正确
              avatarUrl: userData.avatar || this.data.userInfo?.avatarUrl
            },
            userStats: {
              works: userData.works_count || 0,
              likes: userData.likes_count || 0,
              followers: userData.followers_count || 0,
              following: userData.following_count || 0
            }
          });
          
          // 更新全局用户信息
          const app = getApp();
          if (app.globalData.userInfo) {
            app.globalData.userInfo = {
              ...app.globalData.userInfo,
              ...userData
            };
          }
          
          // 生成部分显示的用户ID
          const displayUserId = this.generateDisplayUserId(userData.user_id || userData.userId);
          
          // 更新显示用户ID
          this.setData({
            displayUserId
          });
          
          // 保存更新后的用户信息到本地存储
          wx.setStorage({
            key: 'userInfo',
            data: this.data.userInfo
          });
        } else {
          wx.showToast({
            title: res.data.msg || '获取用户信息失败',
            icon: 'none'
          });
        }
      },
      fail: () => {
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
      },
      complete: () => {
        wx.hideLoading();
      }
    });
  },

  /**
   * 初始化作品列表
   */
  initWorksList() {
    // 清空之前的作品列表，避免数据残留
    this.setData({
      worksList: []
    });
    
    // 检查是否已登录并且有用户信息
    if (!this.data.isLogin || !this.data.userInfo) {
      console.log('未登录或用户信息不存在');
      return;
    }
    
    // 验证用户信息中的作品列表数据是否有效
    if (this.data.userInfo.works_list && Array.isArray(this.data.userInfo.works_list)) {
      // 处理作品列表数据，确保每个作品项都有必要的字段
      const validWorks = this.data.userInfo.works_list.map(work => ({
        id: work.id || `work_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
        title: work.title || '未命名作品',
        coverImage: work.coverImage || 'https://picsum.photos/id/237/300/200', // 默认封面图
        views: parseInt(work.views) || 0,
        likes: parseInt(work.likes) || 0
      }));
      
      this.setData({
        worksList: validWorks
      });
      
      console.log('成功加载作品列表数据', validWorks.length, '条');
      
      // 如果作品列表为空，可以选择显示空状态提示
      if (validWorks.length === 0) {
        console.log('当前没有作品数据');
      }
    } else {
      console.log('接口未返回有效的作品列表数据，使用模拟数据');
      // 如果没有从接口获取到有效的作品列表，则使用模拟数据作为后备
      const worksList = [
        {
          id: '1001',
          title: '春日游湖记',
          coverImage: 'https://picsum.photos/id/10/300/200',
          views: 128,
          likes: 36
        },
        {
          id: '1002',
          title: '中秋赏月诗',
          coverImage: 'https://picsum.photos/id/20/300/200',
          views: 256,
          likes: 89
        },
        {
          id: '1003',
          title: '冬雪感怀',
          coverImage: 'https://picsum.photos/id/30/300/200',
          views: 189,
          likes: 56
        },
        {
          id: '1004',
          title: '梅兰竹菊赋',
          coverImage: 'https://picsum.photos/id/40/300/200',
          views: 320,
          likes: 120
        }
      ];
      
      this.setData({
        worksList
      });
    }
  },

  /**
   * 加载互动数据
   */
  loadActivityData(tabType) {
    this.setData({
      isLoading: true,
      currentTab: tabType
    });
    
    // 模拟网络请求延迟
    setTimeout(() => {
      // 不同标签页的模拟数据
      let activityData = [];
      
      if (tabType === 'likes') {
        activityData = [
          {
            id: '2001',
            type: 'like',
            username: '诗意生活',
            userAvatar: '/images/avatars/1.png',
            content: '赞了你的作品《春日游湖记》',
            time: '10分钟前'
          },
          {
            id: '2002',
            type: 'like',
            username: '古风雅韵',
            userAvatar: '/images/avatars/2.png',
            content: '赞了你的作品《中秋赏月诗》',
            time: '1小时前'
          }
        ];
      } else if (tabType === 'comments') {
        activityData = [
          {
            id: '3001',
            type: 'comment',
            username: '山水之间',
            userAvatar: '/images/avatars/3.png',
            content: '写得真好，仿佛身临其境！',
            workTitle: '春日游湖记',
            time: '昨天'
          }
        ];
      } else if (tabType === 'collects') {
        activityData = [
          {
            id: '4001',
            type: 'collect',
            username: '诗词爱好者',
            userAvatar: '/images/avatars/4.png',
            content: '收藏了你的作品《梅兰竹菊赋》',
            time: '3天前'
          }
        ];
      }
      
      this.setData({
        activityData,
        isLoading: false
      });
    }, 800);
  },

  /**
   * 切换互动数据标签
   */
  switchTab(e) {
    const tabType = e.currentTarget.dataset.tab;
    if (tabType !== this.data.currentTab) {
      this.loadActivityData(tabType);
    }
  },
  
  /**
   * 生成部分显示的用户ID
   */
  generateDisplayUserId(userId) {
    if (!userId || typeof userId !== 'string') return userId;
    
    // 如果ID太短，不做处理
    if (userId.length <= 6) return userId;
    
    // 显示前3位和后3位，中间用星号代替
    const prefix = userId.substring(0, 3);
    const suffix = userId.substring(userId.length - 3);
    const maskedPart = '*'.repeat(userId.length - 6);
    
    return prefix + maskedPart + suffix;
  },
  
  /**
   * 复制用户ID到剪贴板
   */
  copyUserId(e) {
    const userId = e.currentTarget.dataset.userid;
    
    if (userId) {
      wx.setClipboardData({
        data: userId,
        success: () => {
          wx.showToast({
            title: 'ID已复制到剪贴板',
            icon: 'success',
            duration: 2000
          });
        },
        fail: () => {
          wx.showToast({
            title: '复制失败',
            icon: 'none'
          });
        }
      });
    }
  },

  /**
   * 编辑资料
   */
  editProfile() {
    wx.navigateTo({
      url: '/pages/edit-profile/edit-profile'
    });
  },

  /**
   * 跳转到作品详情
   */
  goToWorkDetail(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/work-detail/work-detail?id=${id}`
    });
  },

  /**
   * 查看全部作品
   */
  goToAllWorks() {
    wx.navigateTo({
      url: '/pages/works-list/works-list'
    });
  },

  /**
   * 跳转到我的收藏
   */
  goToCollection() {
    wx.navigateTo({
      url: '/pages/collection/collection'
    });
  },

  /**
   * 跳转到浏览历史
   */
  goToHistory() {
    wx.navigateTo({
      url: '/pages/history/history'
    });
  },

  /**
   * 跳转到我的点赞
   */
  goToFavorites() {
    wx.navigateTo({
      url: '/pages/favorites/favorites'
    });
  },

  /**
   * 跳转到设置
   */
  goToSettings() {
    wx.navigateTo({
      url: '/pages/settings/settings'
    });
  },

  /**
   * 跳转到作品列表
   */
  goToWorks() {
    wx.navigateTo({
      url: '/pages/works-list/works-list'
    });
  },

  /**
   * 跳转到获赞列表
   */
  goToLikes() {
    wx.navigateTo({
      url: '/pages/likes/likes'
    });
  },

  /**
   * 跳转到粉丝列表
   */
  goToFollowers() {
    wx.navigateTo({
      url: '/pages/followers/followers'
    });
  },

  /**
   * 跳转到关注列表
   */
  goToFollowing() {
    wx.navigateTo({
      url: '/pages/following/following'
    });
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.initializeData();
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    // 可以实现加载更多数据的逻辑
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {
    return {
      title: '我的个人主页 - 古诗文化',
      path: '/pages/profile/profile'
    };
  }
})